#include "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h"
#ifdef __cplusplus
extern "C" {
#endif
btGImpactCollisionAlgorithm::CreateFunc* bullet_NewbtGImpactCollisionAlgorithmCreateFunc(){
	btGImpactCollisionAlgorithm::CreateFunc* wrap_out = new btGImpactCollisionAlgorithm::CreateFunc();
	return wrap_out;
}

btGImpactCollisionAlgorithm* bullet_NewbtGImpactCollisionAlgorithm(btCollisionAlgorithmConstructionInfo* ci,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap){
	btCollisionAlgorithmConstructionInfo const& c_arg_ci=(btCollisionAlgorithmConstructionInfo const&)(*ci);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btGImpactCollisionAlgorithm* wrap_out = new btGImpactCollisionAlgorithm(c_arg_ci,c_arg_body0Wrap,c_arg_body1Wrap);
	return wrap_out;
}

int bullet_btGImpactCollisionAlgorithm_getFace0(btGImpactCollisionAlgorithm* c_this){
	int c_out = c_this->getFace0();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btGImpactCollisionAlgorithm_getFace1(btGImpactCollisionAlgorithm* c_this){
	int c_out = c_this->getFace1();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btGImpactCollisionAlgorithm_getPart0(btGImpactCollisionAlgorithm* c_this){
	int c_out = c_this->getPart0();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btGImpactCollisionAlgorithm_getPart1(btGImpactCollisionAlgorithm* c_this){
	int c_out = c_this->getPart1();
	int wrap_out = (c_out);
	return wrap_out;
}

void bullet_btGImpactCollisionAlgorithm_gimpact_vs_compoundshape(btGImpactCollisionAlgorithm* c_this,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btGImpactShapeInterface* shape0,btCompoundShape* shape1,bool swapped){
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btGImpactShapeInterface const * c_arg_shape0=(btGImpactShapeInterface const *)(void*)(shape0);
	btCompoundShape const * c_arg_shape1=(btCompoundShape const *)(void*)(shape1);
	bool c_arg_swapped=swapped;
	c_this->gimpact_vs_compoundshape(c_arg_body0Wrap,c_arg_body1Wrap,c_arg_shape0,c_arg_shape1,c_arg_swapped);
}

void bullet_btGImpactCollisionAlgorithm_gimpact_vs_concave(btGImpactCollisionAlgorithm* c_this,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btGImpactShapeInterface* shape0,btConcaveShape* shape1,bool swapped){
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btGImpactShapeInterface const * c_arg_shape0=(btGImpactShapeInterface const *)(void*)(shape0);
	btConcaveShape const * c_arg_shape1=(btConcaveShape const *)(void*)(shape1);
	bool c_arg_swapped=swapped;
	c_this->gimpact_vs_concave(c_arg_body0Wrap,c_arg_body1Wrap,c_arg_shape0,c_arg_shape1,c_arg_swapped);
}

void bullet_btGImpactCollisionAlgorithm_gimpact_vs_gimpact(btGImpactCollisionAlgorithm* c_this,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btGImpactShapeInterface* shape0,btGImpactShapeInterface* shape1){
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btGImpactShapeInterface const * c_arg_shape0=(btGImpactShapeInterface const *)(void*)(shape0);
	btGImpactShapeInterface const * c_arg_shape1=(btGImpactShapeInterface const *)(void*)(shape1);
	c_this->gimpact_vs_gimpact(c_arg_body0Wrap,c_arg_body1Wrap,c_arg_shape0,c_arg_shape1);
}

void bullet_btGImpactCollisionAlgorithm_gimpact_vs_shape(btGImpactCollisionAlgorithm* c_this,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btGImpactShapeInterface* shape0,btCollisionShape* shape1,bool swapped){
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btGImpactShapeInterface const * c_arg_shape0=(btGImpactShapeInterface const *)(void*)(shape0);
	btCollisionShape const * c_arg_shape1=(btCollisionShape const *)(void*)(shape1);
	bool c_arg_swapped=swapped;
	c_this->gimpact_vs_shape(c_arg_body0Wrap,c_arg_body1Wrap,c_arg_shape0,c_arg_shape1,c_arg_swapped);
}

btManifoldResult* bullet_btGImpactCollisionAlgorithm_internalGetResultOut(btGImpactCollisionAlgorithm* c_this){
	btManifoldResult * c_out = c_this->internalGetResultOut();
	btManifoldResult* wrap_out = (btManifoldResult*)(void*)(c_out);
	return wrap_out;
}

void bullet_btGImpactCollisionAlgorithm_registerAlgorithm(btGImpactCollisionAlgorithm* c_this,btCollisionDispatcher* dispatcher){
	btCollisionDispatcher * c_arg_dispatcher=(btCollisionDispatcher *)(void*)(dispatcher);
	c_this->registerAlgorithm(c_arg_dispatcher);
}

void bullet_btGImpactCollisionAlgorithm_setFace0(btGImpactCollisionAlgorithm* c_this,int value){
	int c_arg_value=value;
	c_this->setFace0(c_arg_value);
}

void bullet_btGImpactCollisionAlgorithm_setFace1(btGImpactCollisionAlgorithm* c_this,int value){
	int c_arg_value=value;
	c_this->setFace1(c_arg_value);
}

void bullet_btGImpactCollisionAlgorithm_setPart0(btGImpactCollisionAlgorithm* c_this,int value){
	int c_arg_value=value;
	c_this->setPart0(c_arg_value);
}

void bullet_btGImpactCollisionAlgorithm_setPart1(btGImpactCollisionAlgorithm* c_this,int value){
	int c_arg_value=value;
	c_this->setPart1(c_arg_value);
}

#ifdef __cplusplus
}
#endif
